package partThree;

import java.util.ArrayList;

/* 本类用于泛型的入门
 * 泛型的优点1*/
public class TestGeneric1 {
    public static void main(String[] args) {
        /* 泛型是怎么来的? 想要模拟数组的数据类型检查*/
        String[] s = new String[5]; //创建一个String类型的数组，长度为5
        s[0]="涛涛";
        s[1]="博博";
        //数组的好处：在编译的时候，就检查数据的类型，只要与数组的类型不匹配就报错，

        //如果集合不加泛型，集合中的元素类型没有约束，太广泛
        ArrayList list = new ArrayList();
        list.add("霞霞");
        list.add(666);
        list.add(3.14);
        list.add('a');
        System.out.println(list);

        /*在集合中引用泛型的概念，泛型通常和集合一起使用
          这样就可以利用泛型约束集合中的元素，除此之外：
          可以把报错的时机提前：只要元素的类型不匹配，在编译期就报错
          而不是运行代码时才报错，向集合中添加元素时，也会自动执行类型检查*/
        ArrayList<String> list2 = new ArrayList();
        list2.add("雷神");
        //list2.add(1);
        //list2.add(5.5);
        //list2.add('a');

        /* 4.<type> -- 这个type的值应该怎么写？
         *  需要根据集合中存入的元素类型做决定，但是type必须是引用类型，不能是基本变量类型
         * 所以，8大基本类型的泛型，应该使用其对应的包装类型，比如int---Integer*/
        ArrayList<Integer> list3 = new ArrayList();
    }
}